/*
 * Copyright (c) Huawei Technologies Co., Ltd. 2024-2024. All rights reserved.
 */

/**
 * hvigor-ohos-plugin项目的打点数据声明
 */
export interface OhosTraceData {
  // 编译模式
  BUILD_MODE?: string,

  // 模块级的数据
  MODULES: ModuleData[],

  // useNormalizedOHMUrl配置的值
  USE_NORMALIZED_OHMURL?: boolean,

  NATIVE_COMPILER: string,
}

export interface ModuleData {
  // 模块名，需匿名处理
  MODULE_NAME: string;

  // 模块类型
  API_TYPE?: string;

  // 该模块调用 restool 后的输出报表
  RESTOOL_COMPRESSION?: RestoolCompressionTrace;

  // 任务是否走了增量
  INCREMENTAL_TASKS?: Record<TraceIncrement, boolean>;

  // 是否使用了源码插桩
  IS_USE_COMPILE_PLUGIN?: boolean;

  // 是否使用字节码插桩
  IS_USE_TRANSFORMLIB?: boolean;

  // 是否开启自动lazy import
  IS_AUTO_LAZY_IMPORT?: boolean;

  // 是否配置了pac文件
  IS_USE_PAC?: boolean;
}

/**
 * 纹理压缩打点
 */
export interface RestoolCompressionTrace {
  /** 时间 */
  TIMESTAMP: number;

  /** 转换总个数 */
  TRANSCODE_FILES: number;

  /** 转换成功率 */
  TRANSCODE_SUCCESS_RATE: number;

  /** 转换总耗时 */
  TRANSCODE_TOTAL_TIME: number;

  /** 转换总膨胀率 */
  TRANSCODE_EXPANSION_RATE: number;
}

export type TraceIncrement = 'BUILD_NATIVE_WITH_CMAKE' | 'COMPILE_ARKTS';